package com.zlyx.easy.web.jpa.service;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 *
 * @Author 赵光
 * @Desc BaseService
 * @Date 2020年5月10日
 */
public interface JpaService<R extends JpaRepository<T, ID>, T, ID> {

	/**
	 * 保存实体对象
	 * 
	 * @param entity
	 * @return
	 */
	T save(T entity);

	/**
	 * 批量保存
	 * 
	 * @param entities
	 * @return
	 */
	List<T> saveAll(List<T> entities);

	/**
	 * 根据id查询
	 * 
	 * @param id
	 * @return
	 */
	T getById(ID id);

	/**
	 * 根据id删除
	 * 
	 * @param id
	 */
	void deleteById(ID id);

	/**
	 * 根据对象
	 * 
	 * @param entity
	 */
	void delete(T entity);

	/**
	 * 批量删除
	 * 
	 * @param entities
	 */
	void deleteAll(List<T> entities);

	/**
	 * 根据id批量删除
	 * 
	 * @param id
	 */
	boolean deleteByIds(List<ID> ids);

	/**
	 * 条件查询
	 * 
	 * @param t
	 * @return
	 */
	T findOne(T t);

	/**
	 * 分页
	 * 
	 * @param pageable
	 * @return
	 */
	Page<T> findAll(int current, int size);

	/**
	 * 条件查询
	 * 
	 * @param t
	 * @return
	 */
	List<T> findAll(T t);

	/**
	 * 分页条件查询
	 * 
	 * @param t
	 * @param pageable
	 * @return
	 */
	Page<T> findAll(T t, int current, int size);

}
